<?php 
namespace fastphp;
/**
 * 控制器基类
 */
class Controller {

    protected $_controller;
    protected $_action;
    protected $_view;

    // 构造函数，初始化属性，并实例化对应模型
    function __construct($controller, $action) {
        // 允许来自任何源的请求（注意：在生产环境中通常不推荐这样做）
        header("Access-Control-Allow-Origin: *");

// 或者，只允许来自特定源的请求
// header("Access-Control-Allow-Origin: http://example.com");

// 允许的方法（GET, POST, PUT, DELETE, OPTIONS）
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");

// 允许的头部（Content-Type, Authorization, X-Requested-With等）
        header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");

// 对于预检请求，表明实际请求将允许携带的头部信息
// 通常不需要手动设置，但如果需要自定义，可以在这里添加
// header("Access-Control-Allow-Headers: Your-Custom-Header, Another-Custom-Header");

// 设置预检请求的缓存时间（以秒为单位）
        header("Access-Control-Max-Age: 86400");

// 如果需要，还可以设置暴露给前端JavaScript的响应头部
// header("Access-Control-Expose-Headers: X-Custom-Header");

// 对于OPTIONS请求，通常不需要返回任何内容，所以设置状态码为204
        if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
            http_response_code(204);
            exit(0);
        }
        $this->_controller = $controller;
        $this->_action = $action;
        $this->_view = new View($controller, $action);
    }

    function set($name, $value) {
        $this->_view->set($name, $value);
    }


}